import axios from 'axios'
var utils = {
  // 注册板块接口，接口文档地址：http://192.168.50.229:8080/lifetime/swagger/index.html#，看后台变动
  GET_USERTEL: '/lifetime/user/get_tel', //判断手机是否已注册，检查传0
  GET_USERSMS: '/lifetime/user/sms', //获取验证码
  SET_PASSWORD: '/lifetime/user/retrieve_password', //找回密码
  SET_ADDUSER: '/lifetime/user/add_user', //注册用户
  CHENK_USER_NAME: '/lifetime/user/check_user_name', //判断用户昵称是否已使用
  SGIN_USER: '/lifetime/user/login', //用户登录
  SET_USET_MESSAGE: '/lifetime/user/set_user', //完善个人资料
  UP_IMAGE: '/lifetime/platform/upload_image', //上传图片

  // 个人中心板块接口
  GET_LIKE_LIST: '/lifetime/interactive/get_like_list?type=12', //GET 获取个人收藏，12写死
  GET_USER_mESSAGE: '/lifetime/user/get_user_info', //GET 获取用户信息
  GET_USER_CHIPS: '/lifetime/user/get_activity_list', //GET 我的众筹，众筹crowdType传1，identity:用户信息，page：0
  BOUND_PHONE: '/lifetime/crowd_user/add_user', //POST 微信绑定手机号,传参数  tel 电话号码  openid 微信id  type 固定6
  DEL_COLLECTION: '/lifetime/interactive/set_collection', //POST 删除收藏，id:收藏id，type：收藏type
  GET_SUPPORT_LIST: '/lifetime/crowd_user/get_my_crowd_list', // GET 不需要传参

  GET_ACTIVE_LIST: '/lifetime/activity/get_activity_list', //GET 获取活动列表 参数 crowdType 固定传1
  GET_CHIPS_DETAILS: '/lifetime/activity/get_activity', //GET 获取活动详情 id：活动id
  SET_CHIPS_MESSAGE: '/lifetime/activity/set_user_activity', //POST 报名众筹 id 活动 id ， userName 用户姓名 ，userTel用户电话，activityNumber活动人数固定1，userIntroduction简介
  GET_SUPPOIRT_DETAILS: '/lifetime/crowd_user/get_user_crowd_list', //GET 获取支持详情 userId:用户id activityId：活动id

  // 评论点赞收藏板块接口
  SET_COMMENT: '/lifetime/conmment/add_conmment', //POST 点回复支持 id:评论的id，type:17
  SET_COLLECTION: '/lifetime/interactive/set_collection', //POST 收藏 id:活动id，type：3
  SET_LIKE: '/lifetime/interactive/set_like', //POST 点赞 id:评论的id,type：3
  GET_COMMENT: '/lifetime/conmment/get_conmment_list', //GET 获取滚动评论 id:活动id，type：13，page：1
  ADD_COMMENT: '/lifetime/conmment/add_conmment', //POST 设置活动评论 id:活动id，type：13，commentContent：'评论内容'
  // 获取订单号
  //orderFormTypeId,活动id，orderFormType：活动类型16，orderFormTotal，orderFormPhone：用户手机
  //userName:用户名，userUrl：用户头像，userId：用户id,openid:'',微信的openid,crowdUserId:支持者id
  GET_ORDER_FORM: '/lifetime/order_form/add_order_form_number',
  GET_WX_SET: '/lifetime/order_form/get_sign', //GET 获取微信配置
  SET_PAY_DATA: '/lifetime/crowd_user/get_user_crowd_id', //GET activityId 活动id ， crowdUserId 支持者id ， openid 支持者微信id ， userId 发起众筹的用户id
  GET_WX_PAY: '/lifetime/order_form/wx_pay', //GET 获取支付配置 orderNumber: 订单号

  // 微信绑定板块接口
  GET_WX_BING: '/lifetime/crowd_user/get_user_openid', //判断微信是否已注册，传openid
  GET_WX_LOGIN: '/lifetime/user/wx_login', //微信登录账号，传openid
  ADD_USER_CROWD: '/lifetime/crowd_user/add_user', //用户已登录绑定微信接口，传手机号 tel ，参数type传6 ，openid
  DEL_WX_LOSIN: '/lifetime/user/del_wx', //用户取消微信绑定
  GET_USER_TYPE: '/lifetime/user/wx_login', //判断是否微信绑定 type:1
  GET_USER_WX_SMS: '/lifetime/user/sms', //获取微信注册验证码 type:5,tel：手机号
  GET_WX_MESSAGE: '/lifetime/share/get_openid', //获取微信id信息

  GETOPENID: '/lifetime/crowd_user/get_user_oid', //GET intity：uuid获取用户的openid
  REMOVEUSER: '/lifetime/crowd_user/del_wx_user', //GET 销毁用户  identity:uuid
  ISBINDPHONE:'/lifetime/crowd_user/get_user_type_h',//GET 判断此微信用户是否已绑定手机号
  ADD_WX_PHONE:'/lifetime/crowd_user/add_wx',//GET 微信绑定手机号
  prevent: true, //防止多次点击
  /**
   * 统一post请求
   * @param {string} url 请求路径
   * @param {*} data 数据
   * @param {funciton} callback 成功回调
   */
  $post(url, callback, data) {
    this.prevent = true
    if (!this.prevent) {
      return
    }
    this.prevent = false
    axios({ method: 'POST', url: url, data: data })
      .then(res => {
        this.prevent = true
        if (res.data.code != 0) return mui.toast(res.data.msg)
        callback(res.data)
      })
      .catch(err => {
        this.prevent = true
        console.log('axios post错误:', err)
      })
  },
  /**
   * 统一get请求
   * @param {string} url请求路径 请求路径
   * @param {*} params 数据
   * @param {funciton} callback 成功回调
   */
  $get(url, callback, params) {
    this.prevent = true
    if (!this.prevent) {
      return
    }
    this.prevent = false
    axios
      .get(url, { params })
      .then(res => {
        this.prevent = true

        callback(res.data)
        if (url == '/lifetime/user/wx_login') {
          return
        }
        if (url == '/lifetime/user/get_tel'){
          return
        } 
        if (res.data.code != 0) return mui.toast(res.data.msg)
      })
      .catch(err => {
        this.prevent = true
        console.log('axios get错误:', err)
      })
  },

  /**
   * 统一cookie操作
   * @param {string} request 操作方式,get,set,del
   * @param {string} name cookie名
   * @param {*} value 值
   * @param {number} time cookie保留的时间
   */
  cookie(request, name, value, time) {
    //   获取cookie,
    if (request == 'get') {
      var arr,
        reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)')
      if ((arr = document.cookie.match(reg))) {
        return JSON.parse(unescape(arr[2]))
      } else return null
    }
    // 设置cookie
    if (request == 'set') {
      var strsec = getsec(time)
      var exp = new Date()
      exp.setTime(exp.getTime() + strsec * 1)
      document.cookie =
        name + '=' + escape(value) + ';expires=' + exp.toGMTString()
    }
    // 删除cookie
    if (request == 'del') {
      var exp = new Date()
      exp.setTime(exp.getTime() - 1)
      var arr,
        reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)')
      if ((arr = document.cookie.match(reg))) {
        var cval = unescape(arr[2])
        if (cval != null)
          document.cookie = name + '=' + cval + ';expires=' + exp.toGMTString()
      }
    }
    // 计算cookie时间
    //s20是代表20秒
    //h是指小时，如12小时则是：h12
    //d是天数，30天则：d30
    function getsec(str) {
      var str1 = str.substring(1, str.length) * 1
      var str2 = str.substring(0, 1)
      if (str2 == 's') {
        return str1 * 1000
      } else if (str2 == 'h') {
        return str1 * 60 * 60 * 1000
      } else if (str2 == 'd') {
        return str1 * 24 * 60 * 60 * 1000
      }
    }
  },
  // 时间戳处理
  parseDate(time) {
    var delta = Date.now() - time
    var d = parseInt(delta / 24 / 60 / 60 / 1000)
    var h = parseInt(delta / 60 / 60 / 1000)
    var m = parseInt(delta / 60 / 1000)

    if (d > 0 && d < 4) {
      return d + '天前'
    } else if (d > 3) {
      return new Date(time).Format('MM-DD HH:mm')
    } else if (h > 0) {
      return h + '小时前'
    } else if (m > 0) {
      return m + '分钟前'
    } else {
      return '刚刚'
    }
  },

  // 时间戳处理
  parseTime(time) {
    if (time <= 0) {
      return '已过期'
    }
    var d = parseInt(time / 24 / 60 / 60 / 1000)
    var h = parseInt(time / 60 / 60 / 1000)
    var m = parseInt(time / 60 / 1000)
    var s = parseInt(time / 1000)
    if (d > 0) {
      return d + '天'
    } else if (h > 0) {
      return h + '小时'
    } else if (m > 0) {
      return m + '分钟'
    } else {
      return s + '秒'
    }
  },

  // 浏览器判断
  browser: (function() {
    var u = navigator.userAgent.toLowerCase()
    return {
      android: u.indexOf('android') > -1 || u.indexOf('linux') > -1, //android
      ios: u.indexOf('iphone') > -1 || u.indexOf('ipad') > -1, //iPhone
      weixin: u.indexOf('micromessenger') > -1 // 微信
    }
  })(),

  /*
** randomWord 产生任意长度随机字母数字组合
** randomFlag-是否任意长度 min-任意长度最小位[固定位数] max-任意长度最大位
** xuanfeng 2014-08-28
*/
  randomWord(randomFlag, min, max) {
    var str = '',
      range = min,
      pos = '',
      arr = [
        '0',
        '1',
        '2',
        '3',
        '4',
        '5',
        '6',
        '7',
        '8',
        '9',
        'a',
        'b',
        'c',
        'd',
        'e',
        'f',
        'g',
        'h',
        'i',
        'j',
        'k',
        'l',
        'm',
        'n',
        'o',
        'p',
        'q',
        'r',
        's',
        't',
        'u',
        'v',
        'w',
        'x',
        'y',
        'z',
        'A',
        'B',
        'C',
        'D',
        'E',
        'F',
        'G',
        'H',
        'I',
        'J',
        'K',
        'L',
        'M',
        'N',
        'O',
        'P',
        'Q',
        'R',
        'S',
        'T',
        'U',
        'V',
        'W',
        'X',
        'Y',
        'Z'
      ]

    // 随机产生
    if (randomFlag) {
      range = Math.round(Math.random() * (max - min)) + min
    }
    for (var i = 0; i < range; i++) {
      pos = Math.round(Math.random() * (arr.length - 1))
      str += arr[pos]
    }
    return str
  },

  splitString(str) {
    return str
  },
  // 生成uuid
  guid() {
    function S4() {
      return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
    }
    return (
      S4() +
      S4() +
      '-' +
      S4() +
      '-' +
      S4() +
      '-' +
      S4() +
      '-' +
      S4() +
      S4() +
      S4()
    )
  }
}

/**
 *
 * 格式化时间
 * @param  {String} formatStr yyyy-mm-dd hh:mm:ss w
 * @return {String}   时间字符串 "2017-06-02 14:05:01 六"
 *
 */
Date.prototype.Format = function(formatStr) {
  var str = formatStr
  var Week = ['日', '一', '二', '三', '四', '五', '六']
  str = str.replace(/yyyy|YYYY/, this.getFullYear())
  str = str.replace(
    /yy|YY/,
    this.getYear() % 100 > 9
      ? (this.getYear() % 100).toString()
      : '0' + this.getYear() % 100
  )
  str = str.replace(
    /MM/,
    this.getMonth() + 1 > 9
      ? (this.getMonth() + 1).toString()
      : '0' + (this.getMonth() + 1)
  )
  str = str.replace(/M/g, this.getMonth() + 1)
  str = str.replace(/w|W/g, Week[this.getDay()])
  str = str.replace(
    /dd|DD/,
    this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate()
  )
  str = str.replace(/d|D/g, this.getDate())
  str = str.replace(
    /hh|HH/,
    this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours()
  )
  str = str.replace(/h|H/g, this.getHours())
  str = str.replace(
    /mm/,
    this.getMinutes() > 9
      ? this.getMinutes().toString()
      : '0' + this.getMinutes()
  )
  str = str.replace(/m/g, this.getMinutes())
  str = str.replace(
    /ss|SS/,
    this.getSeconds() > 9
      ? this.getSeconds().toString()
      : '0' + this.getSeconds()
  )
  str = str.replace(/s|S/g, this.getSeconds())
  return str
}

export default utils
